package jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 执行DQL语句(SELECT)
 */
public class JDBCDemo3 {
    public static void main(String[] args) {
        /*
            查看所有老师的id,名字,年龄,工资,奖金,性别
            SELECT id,name,age,salary,comm,gender
            FROM teacher
         */
        try(
            Connection connection = DBUtil.getConnection();
        ){
            Statement state = connection.createStatement();
            /*
                SELECT子句某个字段如果是一个计算表达式,或者函数.那么应当为该字段
                指定别名.
             */
            String sql = "SELECT id,name,age,salary*12 sal,comm,gender " +
                         "FROM teacher ";
            System.out.println(sql);
            /*
                Statement中
                ResultSet executeQuery(String sql)
                专门用户来执行DQL语句的方法。返回的ResultSet表示执行该DQL后
                产生的查询结果集。通过遍历该结果集得到查询内容
             */
            ResultSet rs = state.executeQuery(sql);
            /*
                ResultSet遍历结果集中重要的方法:

                boolean next()
                让结果集指针向下移动一条数据，如果结果集存在下一条数据则返回
                true否则返回false。
                注:指针默认在结果集第一条记录之前。

                获取指针当前指向的结果集中该条记录的字段值对应的方法:
                String getString(int c)
                获取字符串类型字段的值，c表示结果集中该条记录的第几个字段
                1表示第一个字段，2表示第二个字段以此类推

                String getString(String cname)
                获取字符串类型字段的值,cname表示结果集中该条记录指定名字的字段值

                int getInt(int c)
                int getInt(String cname)
                获取int型字段值

                同样还有获取浮点型，日期型等方法...
             */
            while(rs.next()){
                //获取id
//                int id = rs.getInt(1);
//                String name = rs.getString(2);
//                int age = rs.getInt(3);
//                int salary = rs.getInt(4);
//                int comm = rs.getInt(5);
//                String gender = rs.getString(6);
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                //如果DQL中SELECT的字段有别名,这里获取结果集对应字段要用别名
                int salary = rs.getInt("sal");
                int comm = rs.getInt("comm");
                String gender = rs.getString("gender");
                System.out.println(id+","+name+","+age+","+salary+","+comm+","+gender);
            }

        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}
